約 5,029,483 件
https://w.atwiki.jp/fumiduki1985/pages/341.html
WPFアプリケーションのエントリーポイントとなるMain()関数は、App.xaml(デフォルトの名前。変更した場合はこれに限らない。)をビルドした際に自動実装され、普段プログラマが実装することはない。 しかし、Main関数を自前で実装したい場合は、App.xamlのプロパティで「ビルドアクション」を「Page」に変更すればよい。 こうすることで、Main関数が自動実装されなくなり、独自のMain関数を実装可能になる。 このページのタグ一覧 C# WPF プログラミング 最終更新日:2018/02/06
https://w.atwiki.jp/rpg2kpsp/pages/31.html
画面の表示方法 番号 内容 0 フェードイン 1 全体にランダムブロック 2 上からランダムブロック 3 下からランダムブロック 4 ブラインドオープン 5 上下からストライプ 6 左右からストライプ 7 外側から中心へ 8 中心から外側へ 9 上にスクロール 10 下にスクロール 11 左にスクロール 12 右にスクロール 13 上下に結合 14 左右に結合 15 上下左右に結合 16 ズームアウト 17 モザイク 18 ラスタスクロール 19 瞬間表示
https://w.atwiki.jp/nina_a/pages/59.html
https://w.atwiki.jp/sevenlives/pages/1392.html
XAML?
https://w.atwiki.jp/nina_a/pages/53.html
依存プロパティ(Dependency Property) このページを編集 依存プロパティを使う 依存プロパティを使うには,定義と登録を行うとともに,それをラップするプロパティを作成する. 定義は以下の通り.DependencyPropertyNameにはプロパティ名(たとえばMargin)の末尾にPropertyをつけたものにすると良い. public class ClassName SuperClass{ ... public static readonly DependencyProperty 【DependencyPropertyName】; ...} 登録は以下の通り.静的コンストラクタで登録を行っている. static ClassName(){ ... // 1. この依存プロパティで利用したいサービスを指定するFrameworkPropertyMetadataを作成 // 引数はMSDN参照 http //msdn.microsoft.com/ja-jp/library // /system.windows.frameworkpropertymetadata.frameworkpropertymetadata(v=VS.80).aspx FramrworkPropertyMetadata meta = new FrameworkPropertyMetadata( ... ); // 2. 依存プロパティを登録 【DependencyPropertyName】 = DependencyProperty.Register( "【PropertyName】", 【PropertyType】, 【このプロパティを所有する型】, 【1.のFrameworkPropertyMetadata(オプション)】, 【値を検証するコールバック(オプション)】); ...} ラップするプロパティはこんな感じ.というかこれ以外はすべきでないっぽい. public 【PropertyType】 【PropertyName】{ set { SetValue(【DependencyPropertyName】, value); } get { return (【PropertyType】) GetValue(【DependencyPropertyName】) }} FrameworkPropertyMetadata 詳細は MSDN で.フラグのプロパティのデフォルト値は全て偽. FrameworkPropertyMetadataのプロパティ 説明 AffectsArrange, AffectsMeasure, AffectsParentArrange, AffectsParentMeasure このプロパティが配置パス(あるいは測定パス,親要素の配置パス,測定パス)に影響を与えるかどうか AffectsRender (プロパティが配置や測定に影響を与えない) 何らかの方法でレイアウト全体に影響を及ぼす可能性があるかどうか BindsTwoWayByDefault 真ならプロパティの既定のバインドを双方向にする CoerceValueCallback CoerceValueCallback 実装への参照を取得・設定 DefaultUpdateSourceTrigger - DefaultValue プロパティの既定値 Inherits プロパティ値が継承されるかどうか IsAnimationProhibited 真ならアニメーション中は無効 IsNotDataBindable データバインディングをサポートしているかどうか Journal 真なら,ページベースのアプリケーションで値を保存する OverridesInheritanceBehavior 要素の論理ツリー内の特定のコンテンツ境界にまたがってプロパティ値の継承を評価するかどうか(?) PropertyChangedCallback 値が変わったときのコールバック SubPropertiesDoNotAffectRender サブプロパティがレンダーに影響するか(真ならサブプロパティの値が変わっても再描画されない) 値の設定,変更にともなう検証 DependencyPropertyではセッタで値の検証を行わず(行えず),ValidateValueCallbackとCoerceValueCallbackを使う.実行順序は CoerceValueCallbackで値を変更する機会が与えられる ValidateValueCallbackで正しい値か検証する PropertyChangedCallbackが実行される ValidateValueCallback 新しい値を受け取るか拒否するか決定する.DependencyProperty.Registerの引数で指定する. delegate bool ValidateValueCallback (Object value) CoerceValueCallback 新しい値を受け入れることの出来る値に変える.FrameworkPropertyMetadata.CoerceValueCallbackで指定する. delegate Object CoerceValueCallback (DependencyObject d,Object baseValue) カテゴリ:WPF 名前
https://w.atwiki.jp/atachi/pages/28.html
XAMLの記述 [#g473e2c1] 属性の設定(属性構文) [#h71a06a8] 省略可能なプロパティ [#uece8203] テキストコンテンツ [#u9bf2fb3] マークアップ拡張書式 [#yba17a24] XAMLの構文定義について [#nedec8ff] 名前空間(x ) [#u379ac86] CLR名前空間をXAMLの名前空間から参照 [#zc8d4083] XAMLと分離コード [#f4ac851b] XAML内コード(インラインコード) [#ob04d859] リソース [#o78d48eb] リソースの定義方法 [#t78c704c] 任意のクラスのインスタンス コレクション ObjectDataProvider XmlDataProvider リソースの使用方法 [#y13c2f99] コードからリソースを参照する方法 [#p13e55bc] オブジェクトのツリー構造 [#se1e5f6c] VisualObject [#w2c1331e] XAMLの記述 XAMLでの各要素はそのままクラスコードに直結します。 XAMLでButton要素を使用する場合、Button要素の実体はSystem.Windows.Controls.Buttonクラスです。 そのためXAMLではXMLの要素をオブジェクト要素と呼んでいます。 属性の設定(属性構文) XMLの属性は、XAMLではオブジェクトのプロパティへ値を設定する意味を持ちます。 Button Text="Buttonです" / XAMLで記述されたこの内容は、次のようなC#コードと同じ意味を持ちます。 Button btn = new Button(); btn.Text = "Buttonです"; ただし、XAMLでの記述のすべてがC#コードの等価コードとして表現できません。 次のXAMLはBackgroundプロパティを設定していますが、見たとおりの解釈ではC#等価コードとしては表現できません。 Button Text="Buttonです" Background="Blue"/ Button btn = new Button(); btn.Text = "Buttonです"; btn.Background = "Blue"; // コンパイルエラー XAMLではBackgroundプロパティの値を文字列で設定していますが、ButtonクラスのBackgroundプロパティの型は文字列型ではないため、もしXAMLの見たままのコードをC#コードで記述しようとするとエラーが発生するのです。 ButtonクラスのBackgroundプロパティはBrush型です。 XAMLでは、与えられた「Blue」という文字を巧妙にBrush型に変換し(型コンバーター)、ButtonクラスのBackgroundプロパティへ設定しています。 属性の記述方法は、XMLの属性として記述する方法以外にも次のような記述方法ができます。 Button Button.Text Buttonです /Button.Text Button.Background SolidColorBrush Color="Blue"/ /Button.Background /Button このようなプロパティの記述方法をプロパティ要素と呼びます。 この記述内容は、説明してきたXAMLと同じ結果をもたらしますが、 Backgroundプロパティの設定ではSolidColorBrush要素を明示的に記述するなど、属性がどんな変換がなされているかが表現できています。 オブジェクトのプロパティを設定するにあたって、属性構文を使うかプロパティ要素を使うかはスタイルの問題で重要ではありません。 省略可能なプロパティ オブジェクト要素が持つプロパティの中には、 コンテンツプロパティ と呼ばれるプロパティが設定されているものがあります。 コンテンツプロパティは、プロパティ要素による記述で、ノードの記述を省略しても良いプロパティ要素です。 Border.Childはコンテンツプロパティなので省略しても良いことになっているため、前者のBorderは「 Border.Child 」のノードを省略しています。 次の2つのBorderはどちらも同じデザインです。 Border TextBox Width="300"/ /Border !--explicit equivalent(省略しない場合)-- Border Border.Child TextBox Width="300"/ /Border.Child /Border テキストコンテンツ Button要素のラベルに表示するテキストの設定はText属性で指定していましたが、Buttonのように文字列がコンテンツとして重要な意味を持つオブジェクト要素の中には、次のように記述できるものがあります。 Button Buttonです /Button マークアップ拡張書式 XAMLの属性には文字列としての意味を持つ値しか記述できませんが、画像などのリソースや表示したい内容を動的に変更(バインディング)したい場合があります。 属性にこのような特殊な方法で値を設定する方法としてマークアップ拡張機能があります。 マークアップ拡張機能を使うには、次のマークアップ拡張書式をXAMLの属性に記述します。 {拡張名 値 } {拡張名 キー1=値1,キー2=値2 ...} 拡張名 用途 説明 Binding データバインディング DynamicResource リソース参照 MultiBinding データバインディング PriorityBinding データバインディング TemplateBinding データバインディング RelativeSource データバインディング データバインディングでBinding.RelativeSourceプロパティに対してのみ使用できるマークアップ拡張 StaticResource リソース参照 定義済みのインスタンスを検索し、XAMLの属性値として使用する。(リソースについて) XAMLの構文定義について 用途 プレフィックス定義 定義の名前空間 XAMLの名前空間 xmlns http //schemas.microsoft.com/winfx/2006/xaml/presentation 追加の名前空間 xmlns x http //schemas.microsoft.com/winfx/2006/xaml リファレンス 名前空間(x ) ディレクティブ 説明 x Code インラインコードを記述する(詳細) x XData 属性 x Array x Class x ClassModifier x FieldModifier x Key x Name x Shared x Subclass x TypeArguments マークアップ拡張 説明 x Null XAML プロパティの値として null を指定する。 x Static x Type 指定した XAML 型の基になる型の CLR Type オブジェクトを指定します。 CLR名前空間をXAMLの名前空間から参照 xmlns属性に「clr-namespace ***」という書式で、CLR名前空間を参照するXAML名前空間を定義できる。 Window xmlns dn="clr-namespace System;assembly=mscorlib" ... /Window .NET Frameworksの名前空間をバインドすると便利かもしれない。 参照方法 説明 clr-namespace System;assembly=mscorlib Int16やDecimalといった基本型 clr-namespace System.Collections;assembly=mscorlib Listなどのコレクション型 XAMLと分離コード XAMLは、それ自体の追加の定義を分離コードで定義することができます。 Page xmlns="http //schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns x="http //schemas.microsoft.com/winfx/2006/xaml" x Class="ExampleNamespace.ExamplePage" /Page このようにx Class属性を使用して、このXAMLに対応したクラスをExampleNamespace.ExamplePageに実装します。 この場合、Pageオブジェクト要素の分離コードとなるため、ExampleNamespace.ExamplePageクラスはPageクラスをスーパークラスに設定しなければなりません。 namespace ExampleNamespace { public partial class ExamplePage Page { public ExamplePage() { InitializeComponent(); // 必須 } } } ExamplePageクラスに実装したメソッドやプロパティはXAMLから呼び出すことができます。また、XAMLで定義した名前付きのオブジェクト要素をExamplePageクラスから呼び出すこともできます。 動作的にはIDEによってXAMLファイルはC#コードにコンバートされます。 C#ではクラスの定義を複数のファイルに記述することができるクラス(パーシャルクラス)があるので、プログラマが記述するコードとツールが出力するコードを分けることができます。(上記のように分離コードではpartial修飾子をつけてクラスを定義している) XAML内コード(インラインコード) x Code要素を使ってXAML内にコードを記述することができます。 Page xmlns="http //schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns x="http //schemas.microsoft.com/winfx/2006/xaml" x Code ![CDATA[ void Clicked(object sender, RoutedEventArgs e) { button1.Content = "Hello World"; } ]] /x Code Button Name="button1" Click="Clicked" Click Me! /Button /Page インラインコードは短いロジックを記述するには便利ですが、使用にはいくつかの制限があります。 インターフェースとロジックとの切り分けが曖昧 プラグマの記述ができない(特に#ifdefがつかえないのは痛い) リソース リソースを使用するにはルート要素が持つResourcesプロパティを使用します。 外部リソースでは再利用可能なスタイルやインスタンスなどを定義したファイルをリソースとして定義しておくことができます。 外部リソースを1つだけ読み込む場合には、Resourcesに直接ResourceDictionary要素を子要素に追加していきます。 複数の外部リソースを読み込む場合は、次のようにリソースのマージを行います。 Window.Resources ResourceDirectory ResourceDirectory.MergedDictionaries ResourceDictionary Source="MyResource1.xaml" / ResourceDictionary Source="MyResource2.xaml" / ResourceDictionary Source="MyResource3.xaml" / /ResourceDirectory.MergedDictionaries /ResourceDirectory /Window.Resources 参考 MSDN リソースの概要 リソースの定義方法 任意のクラスのインスタンス Window.Resources SolidColorBrush x Key="resBrush" Color="Yellow" / /Window.Resources コレクション col ArrayList x Key="DataSource" sys DateTime 1/2/2003 5 00 00 /sys DateTime sys DateTime 4/5/2006 13 13 13 /sys DateTime sys DateTime 7/8/2009 23 59 59 /sys DateTime /col ArrayList .NET Frameworksのコレクションクラスを使用するために、XMLノードの属性にxmlns属性を使ってそれぞれのコレクションに名前をつけます。 上記のサンプルコードでのcolやsysといった名前空間は次の通りです。 xmlns sys="clr-namespace System;assembly=mscorlib" xmlns col="clr-namespace System.Collections;assembly=mscorlib" ObjectDataProvider Window.Resources !-- the customers datasource -- ObjectDataProvider x Key="CustomerDataProvider" ObjectType="{x Type local CustomerDataProvider}"/ ObjectDataProvider x Key="Customers" MethodName="GetCustomers" ObjectInstance="{StaticResource CustomerDataProvider}" / !-- the orders datasource -- ObjectDataProvider x Key="OrdersDataProvider" ObjectType="{x Type local OrdersDataProvider}"/ ObjectDataProvider x Key="Orders" MethodName="GetOrdersByCustomer" ObjectInstance="{StaticResource OrdersDataProvider}" ObjectDataProvider.MethodParameters x Static Member="system String.Empty"/ /ObjectDataProvider.MethodParameters /ObjectDataProvider /Window.Resources ObjectDataProviderはObjectInstanceに指定した任意のインスタンスからデータを取得する。 class MyData { public string[] GetNames() { return new string[] {"北海道","青森","秋田"}; } } XmlDataProvider XmlDataProvider x Key="MyDataSource" XPath="/Companies" x XData Companies xmlns="" Company Name Acme Inc. /Name Contact Name John Doe /Name PhoneNumber 111 /PhoneNumber PhoneNumber 222 /PhoneNumber /Contact Contact Name Billy Bob /Name PhoneNumber 333 /PhoneNumber PhoneNumber 444 /PhoneNumber /Contact /Company Company Name Large Corp. /Name /Company /Companies /x XData /XmlDataProvider リソースの使用方法 StaticResourceマークアップ拡張 コードからの利用 コードからリソースを参照する方法 ResourcesプロパティにアクセスするかFindResourceメソッドを使用します。 // Resourcesプロパティを使用してリソースを取得 SolidColorBrush scb = this.Resources["resBrush"] as SolidColorBrush; SolidColorBrush scb2 = this.Resources["resBrush2"] as SolidColorBrush; SolidColorBrush escb = this.FindResource("resBrush") as SolidColorBrush; Contract.Requires(scb == escb, "異なるリソースです"); ソースからリソースを参照できるので、次のようにXAMLで定義したリソースをソースコードから初期化して、任意のデータが初期化されたインスタンスをリソースとして定義できます。 public partial class MainPage UserControl{ public MainPage() { InitializeComponent(); MainData data = (MainData)Resources["mainDataDataSource"]; data.GridItemList = new List GridItem (); data.GridItemList.Add(new GridItem() { Id = "001", Name = "test001", Comment = "テスト001さんです。" }); data.GridItemList.Add(new GridItem() { Id = "002", Name = "test002", Comment = "テスト002さんです。" }); data.GridItemList.Add(new GridItem() { Id = "003", Name = "test003", Comment = "テスト003さんです。" }); data.GridItemList.Add(new GridItem() { Id = "004", Name = "test004", Comment = "テスト004さんです。" }); data.GridItemSelectIndex = 0; }} UserControl xmlns data="clr-namespace System.Windows.Controls;assembly=System.Windows.Controls.Data" x Class="BindingSample01.MainPage" xmlns="http //schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns x="http //schemas.microsoft.com/winfx/2006/xaml" xmlns d="http //schemas.microsoft.com/expression/blend/2008" xmlns mc="http //schemas.openxmlformats.org/markup-compatibility/2006" xmlns appDatas="clr-namespace BindingSample01.Datas" mc Ignorable="d" d DesignWidth="640" d DesignHeight="480" UserControl.Resources appDatas MainData x Key="mainDataDataSource"/ /UserControl.Resources Grid x Name="LayoutRoot" DataContext="{Binding Source={StaticResource mainDataDataSource} }" Grid.ColumnDefinitions ColumnDefinition Width="200"/ ColumnDefinition Width="*"/ /Grid.ColumnDefinitions data DataGrid Grid.Column="0" AutoGenerateColumns="False" ItemsSource="{Binding GridItemList, Mode=TwoWay}" SelectedIndex="{Binding GridItemSelectIndex, Mode=TwoWay}" data DataGrid.Columns data DataGridTextColumn Header="ID" Binding="{Binding Id, Mode=TwoWay}"/ data DataGridTextColumn Header="NAME" Binding="{Binding Name, Mode=TwoWay}"/ /data DataGrid.Columns /data DataGrid StackPanel Grid.Column="1" DataContext="{Binding GridItemSelectedItem, Mode=TwoWay}" TextBox Text="{Binding Id, Mode=TwoWay}" /TextBox TextBox Text="{Binding Name, Mode=TwoWay}" /TextBox TextBox Text="{Binding Comment, Mode=TwoWay}" /TextBox /StackPanel /Grid /UserControl オブジェクトのツリー構造 XAMLは次のようにXMLをネストしてレイアウトを作成します。 DockPanel Name="ParentElement" xmlns="http //schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns x="http //schemas.microsoft.com/winfx/2006/xaml" !--implicit DockPanel.Children -- ListBox DockPanel.Dock="Top" !--implicit ListBox.Items -- ListBoxItem TextBlock Dog /TextBlock /ListBoxItem ListBoxItem TextBlock Cat /TextBlock /ListBoxItem ListBoxItem TextBlock Fish /TextBlock /ListBoxItem !--implicit /ListBox.Items -- /ListBox Button Height="20" Width="100" DockPanel.Dock="Top" Buy a Pet /Button !--implicit /DockPanel.Children -- /DockPanel このツリー構造には、UIに関するノードとデータに関するノードが混じっています。 XAMLではこのような階層構造を論理ツリーと呼びます。 UIに関するノードだけを含めたものをビジュアルツリーと呼びます。 これらツリー構造はXMALに記述された構造がすべてではありません。 Buttonノードは次のようなビジュアルツリーを持ちます。 Button Chrome ContentPresenter StackPanel Image / TextBlock / /StackPanel /ContentPresenter /Chrome /Button VisualStudioのフォームエディタにはツールバーにButtonコントロールがあり、それを貼り付けるだけでボタンが表示されますが、ButtonコントロールはさらにImageコントロールやTextBlockコントロールによって構成されていることがわかります。 VisualObject コントロールやコンテナなどUIのレイアウトや操作に関する機能を持つコンポーネントをVisualObjectと呼びます。 XAMLによるフォームのレイアウトで、ビジュアルツリーはVisualObjectのノードだけ抽出してできたツリー構造を示します。 VisualObjectはSystem.Windows.Media.Visualクラスをスーパークラスにもつクラスのことです。
https://w.atwiki.jp/gotyagotya/pages/55.html
ゲームってかツールとか。自分用。 ミクさん喋るお トップページ
https://w.atwiki.jp/nina_a/pages/60.html
装飾レイヤー(Adorner Layer) このページを編集 装飾レイヤーとは 装飾対象であるエレメントやコレクションの前面に存在するレイヤーでAdornerを描画する層である.イメージとしては画面上のエレメントなどの上に透明のアクリル板があって,そのアクリル板に描画することで,画面上のエレメントを装飾するというもの. サンプル +テキストボックスの入力が数字以外であった場合にエラーを表示する XAML Window x Class="WpfSampleApplication.MainWindow" xmlns="http //schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns x="http //schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="400" Width="500" Grid x Name="LayoutRoot" Grid.RowDefinitions RowDefinition Height="*" / RowDefinition Height="*" / /Grid.RowDefinitions TextBox Width="200" Height="100" LostKeyboardFocus="OnKeyFocusLost_1"/ TextBox Width="200" Height="100" LostKeyboardFocus="OnKeyFocusLost_2" Grid.Row="1"/ /Grid /Window C# using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Globalization; namespace WpfSampleApplication { /// summary /// MainWindow.xaml の相互作用ロジック /// /summary public partial class MainWindow Window { public MainWindow() { InitializeComponent(); } Adorner adorner_1; private void OnKeyFocusLost_1(object s, RoutedEventArgs e) { var sender = s as TextBox; int output; // TryParseで失敗する場合にAdornerでエラーメッセージを表示する if(!int.TryParse(sender.Text, out output) ) { if(adorner_1 != null) { // senderの装飾レイヤを取得し,SampleAdornerを追加 var adornerLayer = AdornerLayer.GetAdornerLayer(sender); if ( adornerLayer != null ) { adorner_1 = new SampleAdorner(sender); adornerLayer.Add(adorner_1); } } } else if ( adorner_1 != null) { ((AdornerLayer)(adorner_1.Parent)).Remove(adorner_1); adorner_1 = null; } } Adorner adorner_2; private void OnKeyFocusLost_2(object s, RoutedEventArgs e) { var sender = s as TextBox; int output; if (!int.TryParse(sender.Text, out output)) { if (adorner_2 == null) { var adornerLayer = AdornerLayer.GetAdornerLayer(sender); if (adornerLayer != null) { adorner_2 = new SampleAdorner(sender); adornerLayer.Add(adorner_2); } } } else if( adorner_2 != null ) { ((AdornerLayer)(adorner_2.Parent)).Remove(adorner_2); adorner_2 = null; } } private class SampleAdorner Adorner { public SampleAdorner(UIElement adorned) base(adorned) { } protected override void OnRender(DrawingContext drawingContext) { var rect = new Rect(this.AdornedElement.DesiredSize); var text = new FormattedText( "数字以外は入力できません。", CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface("メイリオ"), 20, Brushes.Red); var point = (Point) ( rect.TopLeft - new Point(0, text.Height) ); drawingContext.DrawText(text, point); } } } } カテゴリ:WPF aasasaw - aa 2011-07-13 13 16 41 ああ - あああ 2012-03-27 16 33 39 あああ - あああ 2012-03-27 16 33 58 aaa - aaa 2012-03-29 18 19 11 aaaaaaaaaaaaaaaaaa - aaaaaaaaaaaaaaa 2013-05-24 16 42 23 p - p 2014-06-12 13 30 36 r - r 2014-09-12 15 05 14 あdふぁ - あああ 2014-09-24 14 54 01 名前
https://w.atwiki.jp/atachi/pages/34.html
コンテナ コンテナクラス 説明 Grid コンテナを任意の数のグリッドに区切る。各グリッド内を境界としてコンポーネントを配置したり、複数のグリッドをまたぐこともできる。 StackPanel コンポーネントを任意の方向に向けて一列に並べる。「上下方向」か「左右方向」の指定はOrientation属性で指定する。表示はFlexのHBoxやVBoxのようになる(または、Directionを指定したBox)。 WrapPanel コンポーネントを左上から右下に向けて連続して並べる。並べる際の方向は左から右方向か、上から下方向で選択できる。 Canvas 座標を指定できるので、コンポーネントを自由な場所に配置できる。 マウスイベントの問題 DaDMgrはアプリケーションのルート要素が受け取っているPreviewDragOverイベントをハンドリングし、Adornerをマウスに追従させているのですが、背景色を設定しないコンテナにおいて、マウスイベントが発生しない問題があります。(WPFでは予てからのバグなのか仕様なのか・・・) ただし、この問題は簡単に回避可能で、Backgroundプロパティを設定すればよいだけです。 透過色も使用できます。 Window Grid Grid.Background SolidColorBrush / /Grid.Background /Grid /Window
https://w.atwiki.jp/atachi/pages/42.html
NotifyMessageとはタスクバーのタスクトレイに表示されるメッセージのこと。 参考サイト http //www.codeproject.com/KB/WPF/wpf_notifyicon.aspx